Computer devices have become a primary means for delivering digital content to users. One of the challenges in delivering effective digital content is to ensure that the content is relevant to the user; that is, to present content that relates directly to the interests, needs and profile of the user, so that the likelihood of the user effectively utilizing or responding to the provided digital content is increased.
Several attempts to solve this problem have been implemented in the commercial marketplace, including the use of search engine queries to filter and prioritize digital content (specifically advertising) to increase relevance. These methods are inherently limited due to their restricted frame of reference and limited understanding of what task the user is actually working on at any given time.
U.S. patent application 60/757,596 entitled “Methods for Assisting Computer Users Performing Multiple Tasks,” which is incorporated herein by reference, describes techniques for assisting and improving the productivity of computer users, and relates specifically to computer-implemented methods for assisting users who switch between multiple tasks in a computing environment. The method includes collecting from multiple executing programs event records that represent state changes in the programs. The event records may be collected, for example, by monitoring state changes in the multiple programs, selecting a subset of the monitored state changes, and generating event records representing the selected subset. The state changes in the programs may result from user interaction, automated processes, network communications, or other interactions between the programs and the computing environment. User interaction, for example, may include various forms of input received from the user, either locally or remotely, such as input resulting from user interaction with various programs or direct user feedback, e.g., correcting predicted associations between tasks and resources. The method also includes receiving from the user a specification of a task being performed by the user, e.g., when a user switches tasks and elects to explicitly specify the task. The user may also specify metadata associated with the task, e.g., information about relationships between tasks or an indication of completion of a task.
Also included in the method is predicting a current task being performed by the user, e.g., applying machine learning algorithms to predict a most probable current task from stored evidence such as past associations between events and tasks. The current task may be predicted based on evidence including: i) a most recent event record, ii) a most recent specification received from the user of a task being performed by the user, and iii) past event records and associated task identifiers stored in a database. Other evidence may also be included such as time since the user last specified a task, past indications of completed tasks, tasks or keywords associated with resources related to the latest event, and explicit associations by the user between tasks and resources. Based on the predicted current task, user interface elements in multiple executing programs are automatically adapted to facilitate performing the current task. For example, the adaptation may include displaying a resource list (such as folders or directories) that contains resources associated with the predicted current task or that contains a menu of recently used resources filtered to favor resources associated with the predicted current task. The adaptation may also include displaying the predicted current task, e.g., in a menu bar of a window. These resources, however, are limited to user resources stored locally, and to resources of users sharing a common task with the user. No techniques are presented for automatically delivering remote content to a user that is relevant to the current user task.